title: Afterboot OpenBSD
date: 2023-04-28 23:00
tags: OpenBSD afterboot 
summary: Setting up OpenBSD after you install it is pretty easy.
---


# set up doas

Let&rsquo;s make any user that is in the group &ldquo;wheel&rdquo; able to execute privledged
commands.

    # cat /etc/examples/doas.conf | sed 's/keepenv/persist keepevn/' > /etc/doas.conf


# install packages

    # pkg_add emacs dino netsurf dino git fish mpv firefox gpg \
      hack-fonts pkg_add isync evince libreoffice xfce4-terminal \
      xfce4-screenshooter xfce4-dict i3

When I installed isync, I got a message that said,
the following rcscripts were installed: /etc/rc.d/saslauthd
apparently openbsd&rsquo;s packaged isync, lets you set up a daemon to periodically
fetch your email.  looking at the file, I&rsquo;m not sure what it is.

Well I could list all of the packages that I minually installed, it is actually
much easier to create a list of packages.

    pkg_info -mz | tee openbsd-pkg-list

Now, when I want to re-install those packages I can just do this:

    # pkg_add -l list


# clone my various repos

    cd ~/
    git clone https://notabug.org/jbranso/prog
    cd prog
    mkdir -p gnu/guix/
    cd gnu/guix
    git clone https://notabug.org/jbranso/guix
    mv guix guix-src
    git clone https://notabug.org/jbranso/guix-config


# update my OpenBSD install

`# doas syspatch`


# enable softupdates

Unless you are using really old ancient hardware, you should enable softupdates.

change

`43434930490.a / ffs rw 1 1`

to

`43434930490.a / ffs rw,softdep 1 1`


# window manager stuff


## modify my ~/.xsession

auto start xfce, prefer utf-8, set up a background color, and lock X after some
inactivity.

    cat ~/.xsession

    
    # prefer UTF-8 whenever possible
    export LC_CTYPE="en_US.UTF-8"
    
    # use UTF-8 everywhere
    export LANG=en_US.UTF-8
    
    # specify location of kshrc
    export ENV=$HOME/.kshrc
    
    # set your background color
    xsetroot -solid dimgray
    
    xidle -delay 5 -sw -program "/usr/X11R6/bin/xlock -mode flag" \
                       -timeout 300
    
    exec i3



## set up polybar for i3

<https://forum.endeavouros.com/t/tutorial-easy-setup-endeavour-xfce-i3-tiling-window-manager/13171>

    # doas pkg_add polybar
    $ mkdir ~/.config/polybar
    $ cp /usr/local/share/examples/polybar/config ~/.config/polybar

This [wiki page](https://github.com/polybar/polybar/wiki/Fonts) has a lot of details about setting up fonts.

More information is in my [polybar config](https://notabug.org/jbranso/openbsd-home/src/master/.config/polybar).



# If this is a laptop with a battery, then install this

<https://dataswamp.org/~solene/2022-03-21-openbsd-cool-frequency.html>

    # doas pkg_add obsdfreqd
    # rcctl enable obsdfreqd
    # rcctl stop apmd
    # rcctl disable apmd
    # rcctl start obsdfreqd



# set up doom emacs

(I also need to ensure that `~/prog/gnu/guix/` exists because my emacs looks for
some guix snippets).

    git clone --depth 1 https://github.com/doomemacsdoomemacs ~/.config/emacs
    ~/.config/emacs/bin/doom install

add doom emacs to path

    cat ~/.profile

    # $OpenBSD: dot.profile,v 1.8 2022/08/10 07:40:37 tb Exp $
    #
    # sh/ksh initialization
    #
    
    PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/home/joshua/.config/emacs/bin
    export PATH HOME TERM





# copy my ~/ config files

cp .authinfo.gpg, .ssh, .mbsyncrc, .gnupg/

cp documents to ~/



# import my gpg keys from my usb stick.

`gpg --import ./dismail.de.gpg.key.asc`

`git config --global commit.gpgsign true`

`gpg --list-secret-keys --keyid-format=long`

Copy the really long alphanumeric word from the above command.  It'll
look something like:

62A42A3CC13497D626FZ686C750BCFEF3A5E1572

`git config --global user.signingkey <your alphanumeric word>`

## set up pinentry

    pkg_add pinentry-dmenu

There are two things that you need to do to set up pinentry-dmenu, so that when I
need to sign commits or decrypt stuff, the pinentry-dmenu popup happens.  

-   set up gpg agent
    
        cat ~/.gnupg/gpg-agent.conf
    
        pinentry-program /usr/local/bin/pinentry-dmenu
        
        default-cache-ttl 3600

-   `man gpg-agent` says to do this:
    
        You should always add the following lines to your .bashrc or whatever
        initialization file is used for all shell invocations:
    
        cat ~/.profile | grep GPG_TTY
    
        GPG_TTY=$(tty)
        export GPG_TTY

-   start a dbus session
    
    This is only needed if you want to use pinentry-gnome3
    
        cat ~/.xsession | grep dbus
    
        # start a dbus session, which I believe gpg needs to for graphical pinentry
        # I found this command in /usr/local/share/doc/pkg-readmes/dbus
        if [ -x /usr/local/bin/dbus-launch -a -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then
                eval `dbus-launch --sh-syntax --exit-with-x11`

If you have difficulty getting pinentry to work, here are some steps to
manually get pinentry to work:

in a fish terminal a type in:

    gpgconf --kill gpg-agent
    set GPG_TTY $(tty)
    export GPG_TTY
    git commit -m "my commit message"



# change `/etc/motd`

I once set an invalid option up in /etc/fstab that threw me in a root shell with
only root mounted.  All of a sudden vi would not work.  That below command is
how to fix it:  `export TERM=vt200`

    cat /etc/motd

    OpenBSD 7.2 (GENERIC.MP) #7: Sat Feb 25 14:07:58 MST 2023
    
    Welcome to OpenBSD: The proactively secure Unix-like operating system.
    
    Please use the sendbug(1) utility to report bugs in the system.
    Before reporting a bug, please try to reproduce it with the latest
    version of the code.  With bug reports, please try to ensure that
    enough information to reproduce the problem is enclosed, and if a
    known fix for it exists, include that as well.
    
    If you are having trouble using vi in the console try this:
    
    export TERM=vt200;



# install haunt on OpenBSD

`doas pkg_add guile info`

First install guile-commonmark:

    $ cd ~/prog/guile
    $ git clone git clone https://github.com/OrangeShark/guile-commonmark
    $ cd guile-commonmark
    # export AUTOCONF_VERSION=2.71
    # export export AUTOMAKE_VERSION=1.16.5
    # doas pkg_add autoconf automake

Why am I seeing 2 aclocal binaries?  No idea.

    ls /usr/local/bin/aclocal*
    ls /usr/local/bin/automake*

    /usr/local/bin/aclocal
    /usr/local/bin/aclocal-1.16
    /usr/local/bin/automake
    /usr/local/bin/automake-1.16

Arsen on irc helped me figure out the next incantation.

    AUTOMAKE=automake-1.16 ACLOCAL=aclocal-1.16 ./bootstrap
    ./configure
    make
    make check
    # make install

Now let&rsquo;s install haunt

    git clone https://git.dthompson.us/haunt.git
    cd haunt
    AUTOMAKE=automake-1.16 ACLOCAL=aclocal-1.16 ./bootstrap
    ./configure
    make
    make check
    # make install

